#include "LED.h"
#include "Bitband.h"

void LED_Init(void)
{
	//使能
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF,ENABLE);
	//初始化
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
	GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;
	GPIO_Init(GPIOF, &GPIO_InitStruct);
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
	GPIO_Init(GPIOE, &GPIO_InitStruct);
	//默认输出
	GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);
	GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);
}

void LED_Ctrl(int led_num, int led_state)
{
	switch(led_num)
	{
		case LED0:
			//GPIO_WriteBit(GPIOF, GPIO_Pin_9, (BitAction)led_state);
			if (led_state == LED_TOGGLE)
			{
				GPIO_ToggleBits(GPIOF, GPIO_Pin_9);
			}
			else
			{
				PFout(9) = led_state;
			}
			break;
		case LED1:
			//GPIO_WriteBit(GPIOF, GPIO_Pin_10, (BitAction)led_state);
			if (led_state == LED_TOGGLE)
			{
				GPIO_ToggleBits(GPIOF, GPIO_Pin_10);
			}
			else
			{
				PFout(10) = led_state;
			}
			break;
		case LED2:
			//GPIO_WriteBit(GPIOE, GPIO_Pin_13, (BitAction)led_state);
			if (led_state == LED_TOGGLE)
			{
				GPIO_ToggleBits(GPIOE, GPIO_Pin_13);
			}
			else
			{
				PEout(13) = led_state;
			}
			break;
		case LED3:
			//GPIO_WriteBit(GPIOE, GPIO_Pin_14, (BitAction)led_state);
			if (led_state == LED_TOGGLE)
			{
				GPIO_ToggleBits(GPIOE, GPIO_Pin_14);
			}
			else
			{
				PEout(14) = led_state;
			}
			break;
		default:
			break;
	}
}


